package jzbank.common.responsTool;

/**
 * 业务状态码枚举类 可以根据实际业务情况添加
     1xx系列（信息性状态码）：
     100 Continue：继续
     101 Switching Protocols：切换协议
     2xx系列（成功状态码）：
     3. 200 OK：请求成功
     4. 201 Created：已创建
     5. 202 Accepted：已接受
     6. 204 No Content：无内容
     3xx系列（重定向状态码）：
     7. 300 Multiple Choices：多种选择
     8. 301 Moved Permanently：永久移动
     9. 302 Found：临时移动
     10. 303 See Other：查看其他
     11. 304 Not Modified：未修改
     12. 307 Temporary Redirect：临时重定向
     4xx系列（客户端错误状态码）：
     13. 400 Bad Request：错误请求
     14. 401 Unauthorized：未经授权
     15. 402 Payment Required：需要付款
     16. 403 Forbidden：禁止访问
     17. 404 Not Found：未找到
     18. 405 Method Not Allowed：方法不允许
     19. 406 Not Acceptable：不可接受
     20. 409 Conflict：冲突
     21. 410 Gone：已经消失
     22. 413 Payload Too Large：负载过大
     23. 415 Unsupported Media Type：不支持的媒体类型
     24. 429 Too Many Requests：过多请求
     5xx系列（服务器错误状态码）：
     25. 500 Internal Server Error：内部服务器错误
     26. 501 Not Implemented：未实现
     27. 502 Bad Gateway：错误的网关
     28. 503 Service Unavailable：服务不可用
     29. 504 Gateway Timeout：网关超时
     30. 505 HTTP Version Not Supported：HTTP版本不支持
 * @author 闫鹏
 */
public enum ResCode {
    // 1xx系列（信息性状态码）
    /**
     * 100 Continue：继续
     */
    CONTINUE(100000),
    /**
     * 101 Switching Protocols：切换协议
     */
    SWITCHING_PROTOCOLS(101000),

    // 2xx系列（成功状态码）
    /**
     * 200 OK：请求成功
     */
    OK(200000),
    /**
     * 201 Created：已创建
     */
    CREATED(201000),
    /**
     * 202 Accepted：已接受
     */
    ACCEPTED(202000),
    /**
     * 204 No Content：无内容
     */
    NO_CONTENT(204000),

    // 3xx系列（重定向状态码）
    /**
     * 300 Multiple Choices：多种选择
     */
    MULTIPLE_CHOICES(300000),
    /**
     * 301 Moved Permanently：永久移动
     */
    MOVED_PERMANENTLY(301000),
    /**
     * 302 Found：临时移动
     */
    FOUND(302000),
    /**
     * 303 See Other：查看其他
     */
    SEE_OTHER(303000),
    /**
     * 304 Not Modified：未修改
     */
    NOT_MODIFIED(304000),
    /**
     * 307 Temporary Redirect：临时重定向
     */
    TEMPORARY_REDIRECT(307000),

    // 4xx系列（客户端错误状态码）
    /**
     * 400 Bad Request：错误请求
     */
    BAD_REQUEST(400000),
    /**
     * 401 Unauthorized：未经授权
     */
    UNAUTHORIZED(401000),
    /**
     * 402 Payment Required：需要付款
     */
    PAYMENT_REQUIRED(402000),
    /**
     * 403 Forbidden：禁止访问
     */
    FORBIDDEN(403000),
    /**
     * 404 Not Found：未找到
     */
    NOT_FOUND(404000),
    /**
     * 405 Method Not Allowed：方法不允许
     */
    METHOD_NOT_ALLOWED(405000),
    /**
     * 406 Not Acceptable：不可接受
     */
    NOT_ACCEPTABLE(406000),
    /**
     * 409 Conflict：冲突
     */
    CONFLICT(409000),
    /**
     * 410 Gone：已经消失
     */
    GONE(410000),
    /**
     * 413 Payload Too Large：负载过大
     */
    PAYLOAD_TOO_LARGE(413000),
    /**
     * 415 Unsupported Media Type：不支持的媒体类型
     */
    UNSUPPORTED_MEDIA_TYPE(415000),
    /**
     * 429 Too Many Requests：过多请求
     */
    TOO_MANY_REQUESTS(429000),

    // 5xx系列（服务器错误状态码）
    /**
     * 500 Internal Server Error：内部服务器错误
     */
    INTERNAL_SERVER_ERROR(500000),
    /**
     * 501 Not Implemented：未实现
     */
    NOT_IMPLEMENTED(501000),
    /**
     * 502 Bad Gateway：错误的网关
     */
    BAD_GATEWAY(502000),
    /**
     * 503 Service Unavailable：服务不可用
     */
    SERVICE_UNAVAILABLE(503000),
    /**
     * 504 Gateway Timeout：网关超时
     */
    GATEWAY_TIMEOUT(504000),
    /**
     * 505 HTTP Version Not Supported：HTTP版本不支持
     */
    HTTP_VERSION_NOT_SUPPORTED(505000);

    private final int code;

    ResCode(int code) {
        this.code = code;
    }

    /**
     * 获取状态码的整数值
     *
     * @return 状态码的整数值
     */
    public int getCode() {
        return code;
    }
}
